﻿#region << 文件说明 >>

/*----------------------------------------------------------------
 * 命名空间：Vampirewal.Core.Attributes
 * 唯一标识：dff181e1-74b4-4d1a-a4d7-99169eaf3455
 * 文件名：HeaderAttribute
 *
 * 创建者：杨程
 * 电子邮箱：235160615@qq.com
 * 创建时间：2023/10/30 10:52:38
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/

#endregion << 文件说明 >>

namespace Vampirewal.Core.Attributes;

/// <summary>
/// 列头标记
/// </summary>
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class HeaderAttribute : Attribute
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="header"></param>
    public HeaderAttribute(string header)
    {
        Header = header;
    }

    /// <summary>
    /// 显示的列头
    /// </summary>
    public string Header { get; }

    /// <summary>
    /// 列头宽度，小于10表示根据内容设置宽度
    /// </summary>
    public double HeaderWidth { get; set; }

    /// <summary>
    /// 内容,对齐方式
    /// </summary>
    public AlignmentMode CellAlignmentMode { get; set; } = AlignmentMode.Center;

    /// <summary>
    /// 转换器
    /// </summary>
    public Type Converter { get; set; }
}

/// <summary>
/// 列表预览特性
/// </summary>
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class PreviewListHeaderAttribute : HeaderAttribute
{
    /// <summary>
    /// 是否为进入编辑页项【目前只支持一个】
    /// </summary>
    public bool InEdit { get; set; }

    /// <summary>
    /// 操作对应的标识，需要唯一性
    /// </summary>
    public string OperatorToken { get; set; }

    /// <summary>
    /// 根据<paramref name="header"/>创建指定名称的特性
    /// </summary>
    /// <param name="header">列头显示名</param>
    public PreviewListHeaderAttribute(string header) : base(header)
    {
    }
}
